最近看到了朴素贝叶斯定理,看着看着就看到了em聚类的算法中(K-means聚类的原型)。
动手自己编个程序:
%EM algorithm
clc;
clear;
sigma = 1.5;
miu1 = 3;
miu2 = 7;
N = 1000;
x = zeros(1,N);
for i = 1:N
if rand>0.5
x(1,i) = randn*sigma + miu1;
y(1,i) = randn*sigma + miu1;
else
%sigma = 0.5;
x(1,i) = randn*sigma + miu2;
y(1,i) = randn*sigma + miu2;
end
end
plot(x,y,'o');
k = 2;
%miu = rand(1,k)*40;
miu(1) = 4;
miu(2) = 6;
cov(1) = 2;
cov(2) = 2;
%cov = rand(1,k)*6;
a(1) = 1.5;
a(2) = 1.5;
% expectations = zeros(N,k);
num = [0,0];
n = 1;
for step = 1:10000
n = 1;
m = 1;
x1 = [];
y1 = [];
x2 = [];
y2 = [];
num = [1 1];
for i = 1:N
p1 = exp(-(x(i)-miu(1))*(x(i)-miu(1))/(2*cov(1)*cov(1)))/sqrt((2*pi))*cov(